/*
 * @(#)ModExit.java 1.00 3 Ago 2007
 *
 * Copyright (c) 2005-2007 Soluciones Info Móviles S.A.C.
 * Av. Javier Prado Oeste 203 - Piso 13, Lima 27, Perú.
 * Todos los derechos reservados.
 */
package sim;

import sim.auth.DocAuth;
import sim.framework.Executable;
import sim.framework.FileNames;
import sim.framework.Module;
import sim.framework.Msg;
import sim.framework.Simlet;
import sim.framework.io.File;
import sim.framework.io.FileGets;
import sim.framework.io.FileStream;

/*
 * Se encarga de limpiar el Applet y la solucion para que sea utilizado por otro usuario
 * Por ejemplo, borra todos los archivos almacenados en el terminal utilizando un archivo
 * de nombres enviado desde el servidor (logout.lst).
 *
 * @author      Rodolfo Burlando <r.burlando@lpcsite.com>
 * @author      Omar Quintana <o.quintana@lpcsite.com>
 * @since   1.0
 */
public class ModExit extends Module implements FileGets {
    
    /** Crea una nueva instancia de ModExit */
    public ModExit(int i, Simlet s) {
        super(i, s);
    }
    
    public void work(final Msg msg) {
        switch( msg.getWParam() ) {
            case Executable.STATE_INIT:
                workInit();
                // ejecutar el siguiente módulo (tarea completa)
                execNext();
        }
    }
    
    private void workInit() {
        FileStream file;
        file = (FileStream) FileStream.create(m_Simlet,
                FileNames.FILE_OUT,
                File.MODE_READ);
        // se recorre la información correspondiente al archivo de logout
        if (file != null) {
            file.gets(this);
            file.close();
        }
        // se elimina la información de la autenticación
        delAuth();
    }
    
    private void delAuth() {
        setDocument(Simlet.MOD_AUTH, null);
        DocAuth.delete();
    }
    
    public boolean fileGetsLine(final byte[] line, int size, int crlf) {
        String filename;
        if (size > crlf) {
            filename = new String(line, 0, size - crlf);
            if (File.exists(filename)) {
                File.delete(filename);
            }
        }
        return true;
    }
    
}
